Originally written by Steven Johnson, Auburn University College Bowl, April 1988
About the Program
-----------------
This program is designed to let you keep stats for a College Bowl¬-type tournament. It allows for a maximum of 32 teams, playing up to a maximum of 32 rounds; it also keeps individual stats on up to 6 players per team. Finally, it can use stats accumulated so far to suggest power-matchings if you so desire.
This program may be freely distributed; give it out to anybody you think may want a copy. You may use this program as you wish, without charge. If you use this program to run a tournament and find it useful, we certainly wouldn't mind it if you would send a copy of the rounds used at the tournament to Auburn University College Bowl, although I am not requiring this.
Using the Program
-----------------
These instructions assume you are familiar with the basic techniques of using the Macintosh, such as clicking, dragging, selecting, text editing, etc. If you're not familiar with these (although I suspect you are if you're reading this), you should probably flip through your owner's manual.
This program should (hopefully) run on any 512k or newer Macintosh, though you may want to check carefully if you have a funky hardware setup. You will also need to run this program on a disk that has 60K of space available (this is used for the backup files created during normal operation, just in case the power fails or something). Note that you will probably need to be running System 3.0 or later. (System 3.0 came out with the Mac Plus, and System 6.0 is the latest version, so any System file since Spring 1986 should do the trick.) (Note: a few functions may work strangely if you have a 512K machine with the old 64k ROMs, but the program should still run.) It should run successfully under MultiFinder with a partition as small as 160K (although I recommend you give it more, to be on the safe side). It has not been tested under AppleShare, however, though I think it should work with no problem.
The opening screen gives you the options of Starting the tournament, reading instructions (what you're doing now), or loading a backup. If you select Start new tournament, you will enter all teams and players from scratch. Selecting Load Backup is used if you want to load a partially (or completely) finished tournament that you entered earlier, whether to view final stats or to continue entering rounds or making changes.
When entering team and player names (when starting a new tournament), you should try to restrict their length to 9 and 12 characters, respectively, since some stat displays allow only that much room for them. The program will also ask you to enter the names of the rooms to be used, in case you use the Power Matching option. Finally, you will be asked what name to use to make the backup files during the tournament (more on this topic later).
When entering values into any editable-text field (i.e., anytime you enter text), you can use the Tab, Return, or Enter key to advance to the next edit field. Similarly, you can use Shift-Tab, backslash (\), Clear, or Escape to move to the previous field. When selecting a team or round from a scrolling list box, you can use the arrow keys to highlight the team you want. Also, in most dialogs, typing Command-Return is the same as clicking the "OK" button, and typing Command-Period is the same as clicking the "Cancel" button. (I admit it: these key assignments don't quite go along with Apple's "Human Interface Guidelines". However, they seem more appropriate for this program's uses, and make things especially convenient if you have an extended keyboard.)
If you want even more keyboard assignments, try using Apple's MacroMaker utility (included with the System 6.0 package). It allows you to define any key combination as any other key combination, menu selection, or button click.
MENU ITEMS
----------
The Edit menu does nothing for StatKeeper; it is provided solely for desk accessory support. The Apple menu provides the standard About╔ item, plus Configure╔, which allows you to set up various defaults: the font to be used when printing (Courier or Monaco), serial port settings, and whether or not to censor verbs. This latter item, when unchecked, will use all the defeat-verbs available when presenting last round's results. When checked, it will use only the "official" set of verbs. This allows you to filter out any verbs you add that are, uh, more colorful than the rest.
BETWEEN ROUNDS
--------------
You'll get a window with a whole bunch of buttons on it. This is the "menu" of choices you get in between rounds. When you first start a tournament, many of these will be gray, indicating they call up options that can't be selected yet (you'll have to enter the 1st-round results first). The functions of each button are described below.
The first column of buttons is used for general purposes:
ÑLoad Backup, Quit -- functionally equivalent to the same-named buttons on the opening screen, except that you are prompted to make sure you want to quit or load.
ÑInstructions -- displays the file you're reading now, in case you haven't printed a copy for reference.
The second column of buttons is used to edit information you have already entered:
ÑEdit A Team's Record -- used to correct errors if you make a mistake while entering a round's results. You can change a team's opponent, score, and player stats for any previous round; however, if changing opponents, make sure that you do not accidentally cause any circular pairings, i.e., each team's opponent must have that team as their opponent.
ÑEdit Room Names, Edit Team/Player Names -- these are used in case you made an error when entering team names, or if the rooms available to you change during the tournament.
ÑAdd/Remove a Team -- used in case you accidentally enter a few too many or not enough teams. Note that you may not remove a team if they have played anyone, but you may add new teams at any time.
The third column of buttons is used to display statistics about the tournament play so far. All of these allow optional printing of the statistics shown, or sending to the modem port.
ÑLast Round's Results -- This shows the outcome of each match the previous round, complete with scores and colorful verbs. (Note to technically-minded: you can add or delete defeat-verbs from the list by changing the STR# resource ID=200, using ResEdit or a similar utility; just make sure the total number of strings is between 32 and 255. If you want to denote a verb as "colorful" [ie, able to be filtered by the "Censor Verbs" menu item], enter it with its first character as an asterisk.) To get a listing of all words currently in the list, hold down the mouse button while the program is loading. The verbs will be written to a text file on the default drive.
ÑOverall Team Standings -- Shows a summary of how each team is doing so far. This list is sorted by win-loss record, with ties broken by average points scored per game. One note is that the column "opp score" indicates the sum of all points scored against that team by each opponent. Another note is that the "pts/rnd" column shows, for each team, the average points scored per round played; games which are forfeited are not included in this statistic.
ÑStats for a Particular Team -- you will be prompted for which team; it will show the outcome of each round they've played so far, complete with a bunch of stats on each round.
ÑPlayer Rankings -- shows how each individual player is doing. The list is sorted by average points per round played (points = tossups*10 - ints*5), with ties broken by total points scored. (Note that pts/round will be a somewhat inaccurate ranking system if any rounds have ended in a forfeit, since the players present will be considered by the program to have "played", but scored no tossups that round.)
ÑQuestion Stats -- This is provided as an indicator of how "playable" each round is. It shows the average score per team per round, the average number of tossups and interrupts per round, and the average points-per-tossup (tossups + bonus points) per round.
ÑPrint End-of-Tourn Stats -- this is provided in order to print a complete stat listing for each team at the end of the tournament, without having to manually go through pushing all those buttons. Just click this, then go through the two print dialogs, and it will print, for each team, a copy of their team stats, overall team stats, player stats, and question stats.
The the last column of buttons deals with advancing to the following round:
ÑSuggest Power Matching for Next Round -- this analyzes each team's performance so far and suggests power matchings for next round. (See below for more information.) Of course, at the start of the tournament, the matchings will be purely arbitrary. Also note that room assignments are generated randomly each time this option is selected, so that (hopefully) each team will play in a variety of rooms. When you select this, you are asked if you want to specify who gets the bye. This can be used to insure that a certain team has a BYE in a certain round. If you do not specify who gets the Bye, a team will be chosen arbitrarily; it may often be a team who has already had a Bye, so be careful with this one. NOTE: this button merely _suggests_ power matchings; you can look at its suggestions without having to use them.
ÑEnter Stats for Next Round -- This is the real "guts" of the program, where you enter everything that happens. When results from the next round start coming in, you click this button. It first asks you who wrote the questions for this round. If you select a team for this, they are assumed by the program to have a BYE this round. If no playing team wrote this round's questions (or if the team that wrote them is playing, for some odd reason), select BYE (at the bottom of the list) as having written the questions.
Then the program presents you with a list of teams for whom stats have not yet been entered. First you select a team, then the team they played this round. This will bring up the stat-entry window; each team gets one side of this window. First you should enter the point totals for each team in the bottom two text fields (using standard Mac procedure). Then, select the players from each team that played this round by clicking in the check-boxes next to their name. This will cause edit fields for each player's tossup/bonus totals this round to appear; fill these in as appropriate.
The "Forfeit?" buttons allow you to specify if a team forfeited that match. Clicking the "Forfeit?" button for a team indicates that they forfeited this match; it will be recorded as a loss for them and a win for their opponent. Any figures you enter into the tossup, interrupt, or total-point fields will be ignored; similarly, all players for both teams will be consiodered not to have played that round. If either "Forfeit" button is checked, the entire top of the dialog "grays out" to indicate that all stats and scores will be ignored. NOTE: it is possible for _both_ teams to forfeit in the same match. However, if you do this, they _both_ will be creditied with a loss for that match. To avoid this, have each of them play a BYE that round.
When you click OK, these stats will be entered for this round. If you click cancel, the stats you entered have no effect and the teams selected can be chosen again.
This process of entering team stats goes on until every team has been accounted for this round. If a team did not play anyone, select BYE as their opponent (bottom of the list). If you mis-match two teams, just click Cancel in their stat entry window. If you somehow make multiple mismatches, click Cancel when asked "Which team to enter stats for?"; this will erase all stats you have entered for this round, letting you start over from scratch.
Note that the program currently does _not_ allow games to end in a tie; all matches _must_ end with the two teams having unequal scores, unless one or both teams forfeited.
MORE INFO ABOUT BACKUP FILES
----------------------------
After you completely enter the stats for each round, the program saves all work so far to a backup file, just in case a catastrophe occurs (e.g., excited player trips over power cord, unplugging computer). These will be given names indicating through what round's data they contain. For example, if you specify "Tourn in Progress" (the default name) as your backup-file name, the file "Tourn in Progress/R1" represents the stats after round 1, "Tourn in Progress/R5" represents the stats after round 5, etc. To conserve disk space, the program only keeps the two most recent rounds on disk. At any rate, if you need to restore the tournament state (whether from a crash, or from quitting the program at the end of day 1 of the tournament), select the file with the round number corresponding to the most recent one you entered.
POWER MATCHING
--------------
After each round, you can ask the program to suggest "Power Matchings" for the following round. For those of you unfamiliar with this arrangement, power matching is an tournament-scheduling method where the team match-ups for each round are not determined until the previous round is finished. Each team is matched with the opponent with a win-loss record closest to his, among those teams he hasn't played yet. The idea is to retain the "fairness" of a round-robin tournament when there isn't the time or questions to actually play a full round-robin set.
Thanks to Mark of Emory for explaining his power-matching algorithm, which this one is largely based on.
Note: the power-matching algorithm included in this version is not perfect. It simply sorts team by record, then goes down the list, matching each team the closest team in the list that it hasn't played. If you have an odd number teams, then the last-place will always be given the bye (i.e., you'll want to specify who gets the bye); in any case, it won't work very well when most teams have played most other teams.
PRINTING
--------
The program is set up so that you can print any stat display. Just click the "Print" button, and you'll be given the page setup and print dialogs.
One nice use of printing (if you have a LaserWriter available) would be to print transparencies of power-matchings, stats, etc. and show them on an overhead projector, especially since projection-screens for Macs are hard to come by.
Also available is the "Send to Modem Port" button. This sends the text in the display to whatever device is connected to the Modem Port (using the settings in the Configure╔ box). The serial port settings default to those required for an Imagewriter. This facility was added in case you happen to have some non-Apple printer you want to use, or some overhead-display facility that can accept standard RS-232 input. _NOTE!_ This feature has *NOT* been extensively tested. Be sure to test it wit your equipment before relying on it.
Note: if the computer seems to "lock up" when sending data to the modem port, you probably have the wrong settings. Unplugging the serial cable usually will return the Mac to you.
IF THE PROGRAM BOMBS, OR MAKES EGREGIOUS ERRORS
-----------------------------------------------
First, don't panic. Unless something really horrible has happened, you should still have at least one backup file, not more than 1 or 2 rounds old, on your disk. In this case, run this program and use "Load Backup" to restart the program from whatever point was last saved. If you got a "System Error" bomb message, write down the "ID=xx" number, and a general idea of what you were doing when the crash occurred, and send this to me along with the version number of this program you're using, in hopes of avoiding similar crashes in the future.
KNOWN BUGS
----------
There is a very obscure bug that only seems to occur when running under MultiFinder. In particular, I experienced it running MultiFinder 6.0 on a Macintosh II. It happens if you do the following:
1. When you first start the program, select "Load Backup", then click Cancel.
2. Select "Start New Tournament".
3. When the dialog to enter team names appears, the selection moves from box to box very rapidly, as though the user were holding down the Tab key.
PROGRAM UPDATE HISTORY
----------------------
Version 1.1 changes:
-- a bug in Individual Player Rankings, where players weren't sorted correctly by their listed points-per-game value.
Version 1.2 changes:
-- Desk Accessories and MultiFinder compatibility.
-- increased the number of defeat-verbs allowed, to 255.
-- moved font selection to a menu item.
-- the ability to add and remove teams after you have entered them, as long as they haven't played anyone.
-- Power-matching works reasonably well now.
-- Team names in the team-selector window are sorted alphabetically.
-- eliminated occasional garbling of prompts in background windows.
Version 2.0 changes:
-- allowed the option of censoring defeat-verbs.
-- a few minor problems fixed.
-- back-tabbing added.
-- enter and return now equal tab; clear, escape, and "\" now equal back-tab.
-- arrow key support for scrolling list boxes.
-- command-return and command-period are equal to OK and Cancel.
-- more verbs added. verb error checking more robust. ability to write a list of verbs to disk.
-- ability to automatically print a complete set of stats at the end of the tournament was added.
-- rearranged dialog layout.
-- added the ability for teams to forfeit a match.
-- points-per-round stat was added to the Overall Team Stats display.
-- added the Configure dialog. Moved censor verbs and set font options to it.
-- added capability to send stat text to the modem port.
Version 2.01 changes:
-- fixed bug which prevented tabbing to all editable text fields when entering stats.
-- fixed bug that occurred if you double-clicked "Statkeeper Instructions" to start the program.
-- fixed bug that prevented "Configure╔" from being selected if the Courier font was installed.
-- widened space used to display team & player names in some stat displays.
STUFF TO BE FIXED IN NEXT VERSION (I HOPE)
------------------------------------------
Ñ I may get around to adding a way to handle Ties, but this is not guaranteed.